﻿using System;
using System.Collections.Generic;
using System.Web;
using System.Web.Security;
using System.Web.UI.WebControls;
using Framework.Library.Base.Base;
using Framework.Library.Base.Extensions;
using Framework.Library.Core.Utils;
using Framework.Library.Data.DAL;
using Framework.Library.Data.DAL.JObject;
using Framework.Library.Data.DAO;
using ServiceStack.Text;
using Framework.Library.Core.Config;
using Framework.Library.Core.Provider.Payment;
using Framework.Library.Core.Provider.Log;

namespace Framework.Portal.Layouts.Client.Components.Teenio
{
    public partial class Dangkynghe1thang : BaseControl
    {
        public string MENUNAME = string.Empty;

        public Dangkynghe1thang()
        {
        }

        public Dangkynghe1thang(JSection section)
        {
            MENUNAME = section.title;
        }

        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                int checkpayment = ManagerFactory.TeenioPaymentManager.CheckPayment(Session.GetAccountId(), 0);
                if (checkpayment > 0)
                {
                    pnlError.Visible = true;
                    pnlResult.Visible = false;
                    pnlDangky.Visible = false;
                    lblError.Text = "Bạn đã đăng ký nghe tháng này rồi";
                }
            }
        }

        protected void btnThanhtoan_Click(object sender, EventArgs e)
        {
            VcoinService vcoin = new VcoinService();
            if (Session.IsOnline())
            {
                //Check xem tài khoản có nghe theo tháng hay đã đăng ký nghe bài này chưa                
                Principal info = Session.GetToken();
                if (info != null)
                {
                        int vcoinbalance = 0;
                        try
                        {
                            vcoinbalance = vcoin.BuyItem(info.AccessToken, Convert.ToInt32(cfg.MonthlyCost.VALUE));
                        }
                        catch (Exception ex)
                        {
                            Logger.Info("Đăng ký nghe theo tháng thất bại", "Tài khoản " + info.AccountId + "(" + info.AccessToken + ") :" + vcoinbalance);
                            Logger.Error(ex);
                            pnlError.Visible = true;
                            pnlResult.Visible = false;
                            pnlDangky.Visible = false;
                            lblError.Text = "Xin hãy kiểm tra lại tài khoản";
                            return;
                        }
                        if (vcoinbalance >= 0)
                        {
                            DateTime date = DateTime.Now;
                            TeenioPayment payment = new TeenioPayment();
                            payment.TransCode = date.ToString("yyyyMMddHHmmss");
                            payment.Amount = Convert.ToInt32(cfg.MonthlyCost.VALUE);
                            payment.Status = 1; // Trạng thái thanh toán thành công

                            payment.Item = Convert.ToInt32(date.ToString("yyyyMMddHH"));
                            payment.ItemType = 2; //Thanh toán theo tháng
                            payment.PaygateID = info.AccountId;
                            payment.LastUpdateTime = DateTime.Now;
                            payment.Description = "Thanh toán nghe audio tháng " + date.Month + "/" + date.Year;
                            payment.PaygateTransID = Configurations.TransID;
                            try
                            {
                                ManagerFactory.DAOEntity.Insert(payment);
                                pnlError.Visible = false;
                                pnlResult.Visible = true;
                                pnlDangky.Visible = false;
                                lblFromdate.Text = date.ToString("dd/MM/yyyy");
                                lblTodate.Text = date.AddMonths(1).ToString("dd/MM/yyyy");
                            }
                            catch (Exception ex)
                            {
                                Logger.Info("Không thể thêm dữ liệu", "Tài khoản " + info.AccountId + " đã đăng ký thành công nhưng ko thể ghi log dữ liệu");
                                Logger.Error(ex);
                                pnlError.Visible = true;
                                pnlResult.Visible = false;
                                pnlDangky.Visible = false;
                                lblError.Text = "Nếu gặp lỗi này xin hãy liên hệ với " + cfg.AdminMail;
                            }
                        }
                        else
                        {
                            pnlError.Visible = true;
                            pnlResult.Visible = false;
                            pnlDangky.Visible = false;
                            lblError.Text = "Xin hãy kiểm tra lại tài khoản";
                        }
                    }
            }
            else
            {
                Session["returnUrl"] = Configurations.ROOTPATH + HttpContext.Current.Request.RawUrl;
                Response.Redirect(vcoin.StringAuthentication(HttpUtility.UrlEncode(Configurations.ROOTPATH + HttpContext.Current.Request.RawUrl)));
            }
        }

        protected void btnCancel_Click(object sender, EventArgs e)
        {
            Response.Redirect(Configurations.ROOTPATH);
        }
    }
}